package com.hxstrive.freemarker.demo1;

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateExceptionHandler;

import java.io.File;
import java.io.FileWriter;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.*;

public class Demo3 {

    public static void main(String[] args) throws Exception {
        // 1. 配置 FreeMarker
        Configuration cfg = new Configuration(Configuration.VERSION_2_3_23);
        // 指定模版存放的位置
        cfg.setClassForTemplateLoading(Demo3.class, "/templates/");
        cfg.setDefaultEncoding("UTF-8"); // 指定字符编码
        cfg.setLocale(Locale.CHINESE); // 指定本地语言
        cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);

        // 2. 准备模版数据
        Map<String, Object> input = new HashMap<String, Object>();
        List<String> fruits = new ArrayList<String>();
        fruits.add("苹果");
        fruits.add("李子");
        fruits.add("香蕉");
        input.put("fruits", fruits);
        input.put("misc", new ArrayList<String>());

        // 2.2. 获取模版
        Template template = cfg.getTemplate("template3.ftl");

        // 2.3. 模版 + 数据模型
        // Write output to the console
        Writer consoleWriter = new OutputStreamWriter(System.out);
        template.process(input, consoleWriter);

        // 将输出结果保存到文件中
        Writer fileWriter = new FileWriter(new File("output.html"));
        try {
            template.process(input, fileWriter);
        } finally {
            fileWriter.close();
        }
    }

}
